Non-Termination Analysis of Java Bytecode
نویسندگان
چکیده
We introduce a fully automated static analysis that takes a sequential Java bytecode program P as input and attempts to prove that there exists an infinite execution of P . The technique consists in compiling P into a constraint logic program PCLP and in proving non-termination of PCLP ; when P consists of instructions that are exactly compiled into constraints, the non-termination of PCLP entails that of P . Our approach can handle method calls; to the best of our knowledge, it is the first static approach for Java bytecode able to prove the existence of infinite recursions. We have implemented our technique inside the Julia analyser. We have compared the results of Julia on a set of 113 programs with those provided by AProVE and Invel, the only freely usable non-termination analysers comparable to ours that we are aware of. Only Julia could detect non-termination due to infinite recursion.
منابع مشابه
Java bytecode Verification using Analysis and Transformation of Logic Programs
State of the art analyzers in the (Constraint) Logic Programming paradigm (or (C)LP for short) are nowadays mature and sophisticated. They allow inferring a wide variety of global properties including termination, run-time error freeness, bounds on resource consumption, etc. The aim of this work is to automatically transfer the power of such analysis tools for LP to the analysis and verificatio...
متن کاملCOSTA: Design and Implementation of a Cost and Termination Analyzer for Java Bytecode
This paper describes the architecture of costa, an abstract interpretation based cost and termination analyzer for Java bytecode. The system receives as input a bytecode program, (a choice of) a resource of interest and tries to obtain an upper bound of the resource consumption of the program. costa provides several non-trivial notions of cost, as the consumption of the heap, the number of byte...
متن کاملAutomated Termination Analysis of Java Bytecode by Term Rewriting Carsten Otto and Marc Brockschmidt and Christian Von Essen and Jürgen Giesl
We present an automated approach to prove termination of Java Bytecode (JBC) programs by automatically transforming them to term rewrite systems (TRSs). In this way, the numerous techniques and tools developed for TRS termination can now be used for imperative object-oriented languages like Java, which can be compiled into JBC.
متن کاملExperiments with Non-Termination Analysis for Java Bytecode
Non-termination analysis proves that programs, or parts of a program, do not terminate. This is important since non-termination is often an unexpected behaviour of computer programs and exposes a bug in their code. While research has found ways of proving non-termination of logic programs and of term rewriting systems, this is hardly the case for imperative programs. In this paper, we describe ...
متن کاملCOSTA : A Cost and Termination Analyzer for Java Bytecode ( Tool Demo )
This paper describes costa, a cost and termination analyzer for Java bytecode. The system receives as input a bytecode program and a selection of a resources of interest, and tries to bound the resource consumption of the program with respect to such a cost model. costa provides several non-trivial notions of resource, as the consumption of the heap, the number of bytecode instructions executed...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
- CoRR
دوره abs/1401.5292 شماره
صفحات -
تاریخ انتشار 2014